/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Data.Enemigo;

import Principal.Ataque;
import Principal.Casilla;
import java.awt.Image;
import java.awt.Rectangle;
import java.util.ArrayList;
import javax.swing.ImageIcon;

/**
 *
 * @author REI
 */
public class Enemigo implements Cloneable{


    //******************************atributos de juego*************************************
    private int id;
    private int archivo;
    private String nombre;
    private NodoPotencia potencia;
    private NodoImagen imagen;
    private Image imgn;
    private int x, y, dx, dy, col, fil;
    private int dir;
    private int alto;
    private int ancho;
    private int limitex1,limitex2, limitey1, limitey2;
    private NodoArma arma;
    private NodoEstrategia estrategia;
    private ArrayList<Ataque> disparos;


    public Enemigo(int id, String nombre, NodoPotencia potencia, NodoImagen imagen) {
        this.id = id;
        this.nombre = nombre;
        this.potencia = potencia;
        this.imagen = imagen;
        ImageIcon img = new ImageIcon(imagen.getRuta());
        this.imgn = img.getImage();
        this.alto = imgn.getHeight(null);
        this.ancho =  imgn.getWidth(null);
        this.dir = 1;
        this.disparos = new ArrayList<Ataque>();
    }
    
    @Override
    public Object clone(){
        Object obj=null;
        try{
            obj=super.clone();
        }catch(CloneNotSupportedException ex){
            System.out.println(" no se puede duplicar");
        }
        return obj;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public NodoPotencia getPotencia() {
        return potencia;
    }

    public void setPotencia(NodoPotencia potencia) {
        this.potencia = potencia;
    }

    public NodoImagen getImagen() {
        return imagen;
    }

    public void setImagen(NodoImagen imagen) {
        this.imagen = imagen;
    }

    public Image getImgn() {
        return imgn;
    }

    public void setImgn(Image imgn) {
        this.imgn = imgn;
    }

    public int getX() {
        return x;
    }

    public void setX(int x) {
        this.x = x;
    }

    public int getY() {
        return y;
    }

    public void setY(int y) {
        this.y = y;
    }

    public int getDx() {
        return dx;
    }

    public void setDx(int dx) {
        this.dx = dx;
    }

    public int getDy() {
        return dy;
    }

    public void setDy(int dy) {
        this.dy = dy;
    }

    public int getCol() {
        return col;
    }

    public void setCol(int col) {
        this.col = col;
    }

    public int getFil() {
        return fil;
    }

    public void setFil(int fil) {
        this.fil = fil;
    }

    public int getDir() {
        return dir;
    }

    public void setDir(int dir) {
        this.dir = dir;
    }

    public int getAlto() {
        return alto;
    }

    public void setAlto(int alto) {
        this.alto = alto;
    }

    public int getAncho() {
        return ancho;
    }

    public void setAncho(int ancho) {
        this.ancho = ancho;
    }

    public int getLimitex1() {
        return limitex1;
    }

    public void setLimitex1(int limitex1) {
        this.limitex1 = limitex1;
    }

    public int getLimitex2() {
        return limitex2;
    }

    public void setLimitex2(int limitex2) {
        this.limitex2 = limitex2;
    }

    public int getLimitey1() {
        return limitey1;
    }

    public void setLimitey1(int limitey1) {
        this.limitey1 = limitey1;
    }

    public int getLimitey2() {
        return limitey2;
    }

    public void setLimitey2(int limitey2) {
        this.limitey2 = limitey2;
    }

        
    public Rectangle getUbicacion()
    {
        return new Rectangle(x, y, alto, ancho);
    }

    
    public void setPosicionInicial(Casilla casilla)
    {
        col =  casilla.getCol();
        fil =  casilla.getFil();
        x = casilla.getX()+(casilla.getAncho()/2-ancho/2);
        y = casilla.getY()+(casilla.getAlto()/2 - alto/2);
    }

    public NodoArma getArma() {
        return arma;
    }

    public void setArma(NodoArma arma) {
        this.arma = arma;
    }

    public int getArchivo() {
        return archivo;
    }

    public void setArchivo(int archivo) {
        this.archivo = archivo;
    }
    
    public void atacar(NodoEstrategia estrategia, int tiros)
    {
        Ataque ataque;
        for(int i=0; i < tiros; i++)
        {
            ataque = new Ataque(x, y, limitex2, limitey2, dir, potencia.getNivel(), 2, estrategia);
            ataque.setLimitex1(limitex1);
            ataque.setLimitey1(limitey1);
            disparos.add(ataque);
        }
    }

    public ArrayList<Ataque> getDisparos() {
        return disparos;
    }

    public void setDisparos(ArrayList<Ataque> disparos) {
        this.disparos = disparos;
    }

    public NodoEstrategia getEstrategia() {
        return estrategia;
    }

    public void setEstrategia(NodoEstrategia estrategia) {
        this.estrategia = estrategia;
    }
    
    
        
}
